package com.shenmazong.core;

/**
 * @program: server-java-demo
 * @description: Singleton05
 * @author: 亮子说编程
 * @create: 2020-10-15 11:23
 **/
public class Singleton05 {

    // 对保存实例的变量添加volatile的修饰
    private volatile static Singleton05 instance = null;

    private Singleton05(){

    }

    public static Singleton05 getInstance(){

        //先检查实例是否存在，如果不存在才进入下面的同步块
        if(instance == null){

            //同步块，线程安全的创建实例
            synchronized(Singleton05.class){

                //再次检查实例是否存在，如果不存在才真的创建实例
                if(instance == null){
                    instance = new Singleton05();
                }
            }
        }

        return instance;
    }
}
